
@Book{TAPL,
	Title={Types and Programming Languages}, 
	Author="Benjamin C. Pierce",
	Publisher="MIT Press",
	Year=2002
	}
	
@phdthesis{SafeJava,
 author = {Chandrasekhar Boyapati},
 note = {Supervisor-Martin C. Rinard},
 title = {Safe{J}ava: a unified type system for safe programming},
 year = {2004},
 order_no = {AAI0806105},
 school = "MIT",
 publisher = {Massachusetts Institute of Technology},
 }
 
 @article{ hudak_dsel,
    author = "Paul Hudak",
    title = "Building domain-specific embedded languages",
    journal = "ACM Computing Surveys",
    volume = "28",
    number = "4es",
    pages = "196--196",
    year = "1996",
    url = "citeseer.ist.psu.edu/hudak96building.html" }
 
 @article{ cardelli85understanding,
    author = "Luca Cardelli and Peter Wegner",
    title = "On Understanding Types, Data Abstraction, and Polymorphism",
    journal = "ACM Computing Surveys",
    volume = "17",
    number = "4",
    pages = "471--522",
    year = "1985",
    url = "citeseer.ist.psu.edu/cardelli85understanding.html" }
    
    @inproceedings{ bracha98making,
    author = "Gilad Bracha and Martin Odersky and David Stoutamire and Philip Wadler",
    title = "Making the Future Safe for the Past: Adding Genericity to the {Java} Programming Language",
    booktitle = "{ACM} {S}ymposium on {O}bject {O}riented {P}rogramming: {S}ystems, {L}anguages, and {A}pplications ({OOPSLA})",
    address = "Vancouver, BC",
    editor = "Craig Chambers",
    pages = "183--200",
    year = "1998",
    url = "citeseer.ist.psu.edu/article/bracha98making.html" }
    
    @incollection{ barendregt92lambda,
    author = "Henk Barendregt",
    title = "Lambda Calculi with Types",
    booktitle = "Handbook of Logic in Computer Science, Volumes 1 (Background: Mathematical Structures) and 2 (Background: Computational Structures), Abramsky \& Gabbay \& Maibaum (Eds.), Clarendon",
    volume = "2",
    year = "1992",
    url = "citeseer.ist.psu.edu/barendregt92lambda.html" }
    
    @inproceedings{ barendregt88introduction,
    Author = "H. P. Barendregt",
    title = {Introduction to {L}ambda {C}alculus},
    booktitle = "Aspen{\ae}s Workshop on Implementation of Functional Languages, G{\"o}teborg",
    publisher = "Programming Methodology Group, University of G{\"o}teborg and Chalmers University of Technology",
    year = "1988",
    url = "citeseer.ist.psu.edu/barendregt94introduction.html" }
    
    @book{SICP,
author = {Harold Abelson and Gerald Jay Sussman
and Julie Sussman},
title = {Structure and interpretation of computer
programs},
edition = {Second Edition},
publisher = {MIT Press},
address = {Cambridge, Massachusetts},
year = 1996}

  @book{gof_design_patterns, 
  author = {Erich Gamma and Richart Helm and Ralph Johnson and John Vlissides },
  title = {Design Patterns: Elements of Reusable Object-Oriented Software},
  publisher = {Addison-Wesley},
  year = 1995,
  }
  

@techreport{MonadicParserGenerators,
        author = "Graham Hutton and Erik Meijer",
        title = "{Monadic Parser Combinators}",
        institution = "Department of Computer Science,
                        University of Nottingham",
        type = "Technical Report",
        number = "NOTTCS-TR-96-4",
        year = 1996}
        
@techreport{ScalaOverview,
		author = "Martin Odersky and Philippe Altherr and Vincent Cremet and Iulian Dragos and Gilles Dubochet and Burak Emir and Sean McDirmid and Stéphane Micheloud and Nikolay Mihaylov and Michel Schinz and Erik Stenman and Lex Spoon and Matthias Zenger",
		title = {An {O}verview of the {S}cala {P}rogramming {L}anguage},
		institution = "{\'{E}}cole {P}olytechnique {F}{\'{e}}d{\'{e}}rale de Lausanne (EPFL)",
		number = "LAMP-REPORT-2006-001", 
		year = 2006  
		}
		
        
@inproceedings{ScalableComponentAbstractions, 
 author = {Martin Odersky and Matthias Zenger},
 title = {Scalable component abstractions},
 booktitle = {OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications},
 year = {2005},
 isbn = {1-59593-031-0},
 pages = {41--57},
 location = {San Diego, CA, USA},
 doi = {http://doi.acm.org/10.1145/1094811.1094815},
 publisher = {ACM},
 address = {New York, NY, USA},
 }
 @InProceedings{odersky:scala-experiment,
  author =       {Martin Odersky},
  title =        {The {S}cala {E}xperiment -- {C}an {W}e {P}rovide {B}etter {L}anguage {S}upport for {C}omponent {S}ystems?},
  booktitle =    {Proc. ACM Symposium on Principles of Programming Languages},
  year =         2006,
  pages =        {166-167},
}

@InProceedings{adriaantcpoly,
  author = {Adriaan Moors and Frank Piessens and Martin Odersky},
  title = {Towards equal rights for higher-kinded types},
  booktitle = {In Proceedings MPOOL},
  year = {2007},
  }

 @misc{odersky_pimp_my_library,
 author = {Martin Odersky},
 title = {Pimp my Library},
 year = {2006},
 summary = {What to do if you are stuck with existing libraries and API's},
 url = {http://www.artima.com/weblogs/viewpost.jsp?thread=179766},
 }
 

@Book{appelcompiler,
  author    = {Andrew W. Appel},
  title     = {Modern Compiler Implementation in Java, 2nd edition},
  publisher = {Cambridge University Press},
  year      = {2002},
  isbn      = {0-521-82060-X},
  bibsource = {DBLP, http://dblp.uni-trier.de}
} 
@Unpublished{wadlerexpressionproblem,
  author = {Philip Wadler},
  title = {The Expression Problem},
  note = {Note to Java Genericity mailing list, 12 November 1998},
  year = 1998,
  url = {http://homepages.inf.ed.ac.uk/wadler/papers/expression/expression.txt},
  }
@InProceedings{odersky-zenger:fool12,
  author =       {Martin Odersky and Matthias Zenger},
  title =        {Independently Extensible Solutions to the Expression Problem},
  booktitle =    {Proc. FOOL 12},
  year =         2005,
  month =        jan,
  note =         {\verb@http://homepages.inf.ed.ac.uk/wadler/fool@},
  url = {http://lamp.epfl.ch/~odersky/papers/ExpressionProblem.html}
}	
@TechReport{LAMP-REPORT-2006-006,
   abstract    = {Data in object-oriented programming is organized in a
                 hierarchy of classes. The problem of *object-oriented
                 pattern matching* is how to explore this hierarchy from
                 the outside. This usually involves classifying objects by
                 their run-time type, accessing their members, or
                 determining some other characteristic of a group of
                 objects. In this paper we compare six different pattern
                 matching techniques: object-oriented decomposition,
                 visitors, type-tests/type-casts, typecase, case classes,
                 and extractors. The techniques are compared on nine
                 criteria related to conciseness, maintainability and
                 performance. The paper introduces case classes and
                 extractors as two new pattern-matching methods and shows
                 that their combination works well for all of the
                 established criteria.},
   author      = {Emir, Burak and Odersky, Martin and Williams, John},
   details     = {http://infoscience.epfl.ch/search?recid=98468},
   documenturl = {http://infoscience.epfl.ch/getfile.py?recid=98468&mode=best},
   keywords    = {object-oriented programming; pattern matching; language
                 design; type systems; generalized algebraic data types},
   title       = {Matching {O}bjects with {P}atterns},
   number = "LAMP-REPORT-2006-006", 
   unit        = {LAMP},
   year        = 2006
}

@inproceedings{ wadler89how,
  AUTHOR = {P. Wadler and S. Blott},
  TITLE = {How to make ad-hoc polymorphism less ad-hoc},
  PAGES = {60--76},
  BOOKTITLE = {Conference Record of the 16th Annual {ACM} Symposium
                 on Principles of Programming Languages},
  PUBLISHER = {ACM},
  MONTH = JAN,
  YEAR = 1989,
  DOCUMENTURL = {ftp://ftp.dcs.gla.ac.uk/pub/glasgow-fp/authors/Philip_Wadler/how-to-make-ad-hoc-poly-less-ad-hoc.dvi},
  url = {citeseer.ist.psu.edu/wadler88how.html} }
  
  @inproceedings{wadlerblame,
	abstract = {We show how contracts with blame fit naturally with recent work
on hybrid types and gradual types. Unlike hybrid types or gradual
types, we require casts in the source code, in order to indicate where
type errors may occur. Two (perhaps surprising) aspects of our
approach are that refined types can provide useful static guarantees
even in the absence of a theorem prover, and that type dynamic
should not be regarded as a supertype of all other types. We factor
the well-known notion of subtyping into new notions of positive
and negative subtyping, and use these to characterise where positive
and negative blame may arise. Our approach sharpens and clarifies
some recent results in the literature.},
	author = {Wadler, Philip   and Findler, Robert  B. },
	booktitle = {International Conference of Functional Programming},
	citeulike-article-id = {2240492},
	journal = {Scheme Workshop},
	keywords = {type-theory},
	month = {September},
	priority = {4},
	title = {Well-typed programs can't be blamed},
	url = {http://homepages.inf.ed.ac.uk/wadler/papers/blame/blame.pdf},
	year = {2007}
}   
@misc{schemereport,
    author = "Richard Kelsey and William Clinger and Jonathan Rees (Editors)",
    title = "Revised$^{5}$ Report on the Algorithmic Language {Scheme}",
    journal = "ACM SIGPLAN Notices",
    volume = "33",
    number = "9",
    pages = "26--76",
    year = "1998"
}
@misc{ ego,
  author = "Andi Bejleri and Jonathan Aldrich and  Kevin Bierhoff",
  title = "EGO: Controlling the Power of Simplicity",
  url = "http://www.cs.cmu.edu/~aldrich/ego/",
  note="Proceedings of the Workshop on Foundations of Object Oriented Languages (FOOL/WOOD '06)",
  year= 2007 }